home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / util307.arc / UNDO.BAS < prev    next >
BASIC Source File  |  1987-03-04  |  5KB  |  140 lines

  1. 10 KEY OFF
  2. 20 CLS
  3. 30 COLOR 0,7
  4. 40 LOCATE 5,33
  5. 50 PRINT " UNDO-128.BAS "
  6. 60 LOCATE 7,31
  7. 70 PRINT " By Rich Schinnell "
  8. 80 LOCATE 8,26,1
  9. 90 PRINT " Rockville, MD (301) 949-8848 "
  10. 100 COLOR 7,0
  11. 110 PRINT
  12. 120 PRINT
  13. 130 PRINT "A program for IBM  DOS 2.0/2.1 Fixed Disk owners , ie XT's and"
  14. 140 PRINT "expansion chassis's who use the IBM DOS 2.0 BACKUP.COM utility and"
  15. 150 PRINT "want to access files from their backup disks without Restore."
  16. 160 PRINT "All files are restored up to the next 128 Byte boundry."
  17. 170 PRINT "This cause absolutely no problems as DOS always reserves"
  18. 180 PRINT "space in blocks of 512 for SS disks and 1024 for DS disks."
  19. 190 PRINT "Press <ENTER> to quit... Now Enter  SINGLE Letter Drive  for"
  20. 200 DEFINT A-Z
  21. 210 FALSE% = 0
  22. 220 TRUE% = NOT FALSE%
  23. 230 ON ERROR GOTO 1310
  24. 240 ZZZ! = 1
  25. 250 PRINT:LOCATE ,,1
  26. 260 PRINT"Backup disk Location ";
  27. 270 DR$=INKEY$:IF LEN(DR$)<1 THEN 270
  28. 280 IF ASC(DR$) = 13 THEN 1290
  29. 290 DR$ = DR$ + ":"
  30. 300 OPEN DR$+"BACKUPID.@@@" FOR INPUT AS #1
  31. 310 CLOSE #1
  32. 320 FILES DR$ + "*.*"
  33. 330 PRINT
  34. 340 PRINT
  35. 350 INPUT "File name to Recover (no Drive Designation) ";INFILE$
  36. 360 IF LEN(INFILE$) < 1 THEN 1290
  37. 370 CLOSE #1
  38. 380 OPEN DR$+INFILE$ FOR INPUT AS #1
  39. 390 CLOSE 1
  40. 400 CLOSE #1
  41. 410 OPEN DR$+"BACKUPID.@@@" AS #1 LEN=128
  42. 420 FIELD #1,128 AS G$
  43. 430 GET #1
  44. 440 CLOSE #1
  45. 450 N$ = STR$( ASC( MID$(G$,3,1))) + STR$( ASC( MID$(G$,2,1)))
  46. 460 N=VAL(N$)
  47. 470 DTE$=STR$(ASC(MID$(G$,7,1)))+"-"+STR$(ASC(MID$(G$,6,1)))+"-"
  48. 480 DTE$=DTE$+STR$(ASC(MID$(G$,4,1))+1792)
  49. 490 PRINT "This is your backup disk #"; N;" Dated ";DTE$
  50. 500 CLOSE #1
  51. 510 OPEN DR$+INFILE$ AS #1 LEN=128
  52. 520 C$ = ""
  53. 530 D$ = ""
  54. 540 FIELD #1,128 AS A$
  55. 550 A# = LOF(1)
  56. 560 PRINT "Input file has";A# - 128;" Bytes in it"
  57. 570 GET #1
  58. 580 C$ = A$
  59. 590 FOR I% = 1 TO 128
  60. 600   IF ASC( MID$(C$,I%,1)) < 33 THEN 620
  61. 610   D$ = D$ + MID$(C$,I%,1)
  62. 620 NEXT I%
  63. 630 IF ASC(MID$(C$,2,1)) = 1 THEN 660
  64. 640 PRINT "This is Part 2 of";D$;" You must start with the first part"
  65. 650 BEEP:GOTO 330
  66. 660 IF ASC(MID$(C$,1,1)) =255 THEN ONLY.ONE%=-1:GOTO 690
  67. 670 PRINT:COLOR 23,0:PRINT "File on two Disks ,Insert backup disk #";
  68. 680 PRINT N+1;" When Instructed" : COLOR 7,0 : BEEP
  69. 690 PRINT
  70. 700 PRINT CHR$(34); MID$(D$,1,40); CHR$(34);" Was the file name when backed up"
  71. 710 INPUT "What do you want to name the output file ";OUTFILE$
  72. 720 IF LEN(OUTFILE$) < 1 THEN 330
  73. 730 OPEN OUTFILE$ FOR INPUT AS #2
  74. 740 CLOSE 2
  75. 750 PRINT "File ";OUTFILE$;" already exists, <O>verwrite ";
  76. 760 INPUT ": ";WELL$
  77. 770 IF WELL$ = "O" OR WELL$ = "o" THEN 780  ELSE 710
  78. 780 CLOSE #2
  79. 790 OPEN OUTFILE$ FOR OUTPUT AS #2
  80. 800 CLOSE #2
  81. 810 OPEN OUTFILE$ AS #2 LEN=128
  82. 820 FIELD #2,128 AS B$
  83. 830 COLOR 23,0
  84. 840 PRINT "Working ....";
  85. 850 COLOR 7,0
  86. 860 FOR I! = 2 TO INT((A#-128)/128)+2
  87. 870   GET #1,I!
  88. 880   LSET B$ = A$
  89. 890   PUT #2,ZZZ!
  90. 900   ZZZ! = ZZZ! + 1
  91. 910   PRINT CHR$(15);
  92. 920 NEXT I!
  93. 930 IF ONLY.ONE% THEN 1260
  94. 940 PRINT
  95. 950 PRINT "Insert Backup Disk #";N +1;" in drive ";DR$;
  96. 960 PRINT " and press <ENTER> or <Q>uit ":BEEP
  97. 970 R$ = INKEY$
  98. 980 IF R$ = "" THEN 970
  99. 990 IF R$ = "Q" OR R$ = "q" THEN CLOSE  : KEY ON  : END
  100. 1000 CLOSE #1
  101. 1010 OPEN DR$+"BACKUPID.@@@" AS #1 LEN=128
  102. 1020 FIELD #1,128 AS G$
  103. 1030 GET #1
  104. 1040 CLOSE #1
  105. 1050 N1$ = STR$( ASC( MID$(G$,3,1))) + STR$( ASC( MID$(G$,2,1)))
  106. 1060 N1=VAL(N1$)
  107. 1070 IF N1 = N + 1 THEN 1090
  108. 1080 PRINT "WRONG DISK, TRY AGAIN You put in disk #"; N1 : GOTO 930
  109. 1090 CLOSE #1
  110. 1100 OPEN DR$+INFILE$ FOR INPUT AS #1
  111. 1110 CLOSE 1
  112. 1120 OPEN DR$+INFILE$ AS #1 LEN=128
  113. 1130 FIELD #1,128 AS A$
  114. 1140 C$ = ""
  115. 1150 D$ = ""
  116. 1160 A# = LOF(1)
  117. 1170 PRINT "Input file has";A# - 128;" Bytes in it"
  118. 1180   GET #1
  119. 1190   C$ = A$
  120. 1200 FOR I% = 1 TO 128
  121. 1210   IF ASC( MID$(C$,I%,1)) < 33 THEN 1230
  122. 1220   D$ = D$ + MID$(C$,I%,1)
  123. 1230 NEXT I%
  124. 1240 ONLY.ONE% = - 1
  125. 1250 GOTO 860
  126. 1260 CLOSE
  127. 1270 PRINT
  128. 1280 PRINT "File ";OUTFILE$;" created  Size="; STR$((ZZZ!-1)*128);" Bytes
  129. 1290 KEY ON
  130. 1300 END
  131. 1310 IF ERL=300 THEN DR$="":PRINT " Not a Valid Backup Disk":BEEP:RESUME 250
  132. 1320 IF ERL=380 THEN PRINT DR$;INFILE$;" NOT FOUND ":CLOSE #1:RESUME 250
  133. 1330 IF ERL=730 THEN RESUME 780
  134. 1340 IF ERL=890 THEN PRINT "disk is Probably full, check the disk":RESUME 1290
  135. 1350 IF ERL=1100 THEN PRINT "Not found " : RESUME 940
  136. 1360 PRINT "Error"; ERR ;" has occured in line #"; ERL
  137. 1370 RESUME 1290
  138. as occured in line #"; ERL
  139. 1370 RESUME 1290
  140.